#define GPFCON (*(volatile unsigned long *) 0x56000050) // ABCDEFG
#define GPFDAT (*(volatile unsigned long *) 0x56000054)
#define GPGCON (*(volatile unsigned long *) 0x56000060) // ABCDEFG
#define GPGDAT (*(volatile unsigned long *) 0x56000064)
void delay(unsigned long num){
	for(unsigned long i = 0; i < num; i++){
		for(unsigned long j = 0; j < 1000; j++);
	}
}
// 小灯D10、D11、D12分别对应GPF4、5、6
int main(void){
	unsigned long temp = 0;
	GPFCON |= (1 << 8); // 配置GPF4
	// GPFDAT &= (0 << 4); // D10 点亮
	GPFCON |= (1 << 10); // 配置GPF5
	// GPFDAT &= (0 << 5); // D11 点亮
	GPFCON |= (1 << 12); // 配置GPF6
	// GPFDAT &= (0 << 6); // D12 点亮
	// 为 0 时
	GPFCON |= (0b00 << 0); // 输入
	GPFCON |= (0b00 << 4);
	GPGCON |= (0b00 << 6);
	// 扫描类型的按键亮灯
	while(1){
		temp = GPFDAT & 0x00000001; // 让其它位全是0最后一位不确认 按下temp 为0 
		if(temp){ // 为0就是按下了
			GPFDAT &= ~(1 << 4); // D10 点亮
		}else{
			GPFDAT |= (1 << 4); // D10 熄灭
		}
		temp = GPFDAT & (1 << 2); // 让其它位全是0最后一位不确认
		if(temp){ // 为0就是按下了
			GPFDAT &= ~(1 << 5); // D11 点亮
		}else{
			GPFDAT |= (1 << 5); // D11 熄灭
		}
		temp = GPGDAT & (1 << 3); // 让其它位全是0最后一位不确认
		if(!temp){ // 为0就是按下了
			GPFDAT &= ~(1 << 6); // D12 点亮
		}else{
			GPFDAT |= (1 << 6); // D12 熄灭
		}
	}
	return 0;
}


